﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Quest.FIMPowerShellSnapin
{
    public class Constants
    {
        public class Nouns
        {
            public const string FIMSession = "FIMSession";
            public const string FIMResource = "FIMResource";
        }

        public const int DefaultResultSetSize = 1000; /*!!! this seems low, consider revising*/
        public const string AttributeSpecialValueAll = "ALL";

        /// <summary>
        /// Message strings used by the Powershell cmdlet classes
        /// </summary>
        public class Messages
        {
            public const String Error_AttributeMissing =
                "The specified attribute \"{0}\" does not exist for this object.";

            public const String Error_IllegalOpForSVA =
                "Operation is not supported for attribute \"{0}\" because it is single valued.";

            public const String Error_IllegalOpForMVA =
                "Operation is not supported for attribute \"{0}\" because it is multivalued.";

            public const String Error_FailedCast =
                "Unable to convert to type \"{0}\" the following value: \"{1}\".";

            public const String InternalError_FailedCastFromServer =
                "Internal error. Unable to convert to type \"{0}\" the following value received from FIM server: \"{1}\".";

            public const String Error_MultipleValuesForSvaFromServer =
                "Failed to understand FIM server response. Single valued attribute \"{0}\" seems to have multiple values.";

            public const String Error_EmptyGetResponse =
                "Failed to get resources information from FIM server. The response is empty.";

            public const String Error_GettingResourceAttributesFromIlmSchema =
                "Unable to determine attributes bound to Resource from the FIM schema.";

            public const String Error_NoResultWhenPullingOneObject =
                "Unable to receive some resources. Their representation is too large.";

            public const String Error_UnexpectedEndOfEnumeration =
                "The ILM server unexpectedly finished transferring requested objects. Not all objects are received.";

            public const String InternalError_EnumContextInvalid =
                "Internal error. Enumeration context unexpectedly became invalid.";

            public const String ErrorValNotFoundOnAttr =
                "One or more values are not present on {0}.";

            public const String ErrorDictKeyNotString =
                "Unable to process hashtable parameter \"{0}\". Hashtable keys must be strings.";

            public const String ErrorObtainingIlmSchema =
                "Unable to obtain FIM schema from the server.";

            public const String ConfirmCaption = "Confirm";

            public const String ConfirmNew =
                "Are you sure you want to create a new object{0}?";

            public const String ConfirmRemove =
                "Are you sure you want to remove object{0}?";

            public const String ConfirmSet =
                "Are you sure you want to modify object{0}?";

            public const String VerboseNew =
                "Creating a new object{0}.";

            public const String VerboseRemove =
                "Removing object{0}.";

            public const String VerboseSet =
                "Modifying object{0}.";

            public const String ObjectDetailsDisplayName =
                " \"{0}\"";

            public const String ObjectDetailsID =
                " with ID {0}";

            public const String ObjectDetailsDisplayNameAndID =
                " \"{0}\" (ID {1})";

            public const String ErrorNoObjectId =
                "Specified FIMResource instance does not have an ObjectID value.";

            public const String InternalError_UnknownParameterSet =
                "Internal error. Unexpected parameter set name.";
        }
    }
}
